/*
*Universidad del Valle de Guatemala
* Roger Artemio Diaz Fuentes
* 12176
* Juan de Dios Chivalan Rojas
* 12175
* Esta es la implementacion del MatrizGrafo.
* Descripcion: Aqui se genera la matriz de adyacencia
* 
 */
 //paquetes que se importan para trabajar
package hojas9;
import java.util.*;


public class MatrizGrafo<V,E>{
    
    private int[][] trayectori= new int [25][25];
    private Vector vertic = new Vector();
    
    
   //constructor y inciador de la matris de adyacencia
    public MatrizGrafo(){
        
        for(int i=0;i<25;i++){
            for(int j=0;j<25;j++){
                if(i==j){
                    trayectori[i][j]=0;
                }
                else{
                    trayectori[i][j]=0;
                }
            }
        }
    }
    //agraga valo a la matriz de adyacencia
    public void add(V label) {
        
        //si no contiene
        if(!vertic.contains(label)){
            vertic.add(label);
        }
        
        
    }
   //agraga valor en matriz dependiendo los nodos 
    public void addEdge(V dato1, V dato2, E cadena) {
        int i = vertic.indexOf(dato1);
        int j = vertic.indexOf(dato2);        
        String tmp = ""+cadena;
        int peso = Integer.parseInt(tmp);
        trayectori[i][j]=peso;
    }
    //imprime la matriz de adyacencia en pantalla 
    public void show(){
        for(int a=0;a<vertic.size();a++){
            for(int b=0;b<vertic.size();b++){
                System.out.print(""+trayectori[a][b]+" ");
            }
            System.out.println("");
        }
    }
    // indica el tamanio de la matriz 
    public int size(){
        return vertic.size();
    }
    //nos la distancia entre dos ciudades
    public int getEdge(V label1, V label2){
        return trayectori[vertic.indexOf(label1)][vertic.indexOf(label2)];
    }
    //metodo que verifica si existe un valor dentro de la matriz
    public V get(int label){
        
        return (V)vertic.get(label);
        
    }
    //nos dice la posicon de un valor en matriz 
    public int getIndex(V label){
        return vertic.indexOf(label);
    }
    //verfica si existe en la matriz el valor que se le pasa como paremetro 
    public boolean contains(V label){
        return vertic.contains(label);
    }
}
